﻿using System.Collections.Generic;
using System.Web.Mvc;
using User.EF.Contracts;

namespace User.Web.Contracts.Model.Account
{
    public interface IMemberEditModel
    {
        /// <summary>
        /// MemberTitle, bei Listen wird nur der Getter gesetzt, für den Value selbst gibt es noch ein extra Property
        /// </summary>
        IEnumerable<SelectListItem> MemberTitles { get; }

        /// <summary>
        /// Die Anrede die in der Oberfläche ausgewählt wird (der Value) wird in dieser variable abgelegt, d.h. wenn kein Wert ausgewählt wurde
        /// dann wird auch die hier angegebene Fehlermeldung auf der Oberfläche angezeigt. Wird auch benutzt um die currentselection der Dropdownliste anzuzeigen,
        /// da das Property Selected des SelectedListItem nicht funktioniert!
        /// ACHTUNG der Propertyname darf nicht Title sein, da sonst die Validierung nicht funktioniert!
        /// </summary>
        string MemberTitle { get; set; }

        /// <summary>
        /// Der Username des aktuellen Users - Nur zum Anzeigen!
        /// </summary>
        string Username { get; set; }

        /// <summary>
        /// Der Vorname des aktuellen Users
        /// </summary>
        string FirstName { get; set; }

        /// <summary>
        /// der Nachname des aktuellen Users
        /// </summary>
        string LastName { get; set; }

        /// <summary>
        /// Die Telefonnumer des aktuellen Users
        /// </summary>
        string Mobile { get; set; }

        /// <summary>
        /// Laden der passenden Modeldaten aus der Datenbank.
        /// </summary>
        /// <param name="query">Die aktuellen Queries die uns zur Verfügung stehen</param>
        /// <param name="userId">die UserId für die die Änderungen vorgenommen werden sollen</param>
        bool Load(IWebQuerySummary query, long userId);

        /// <summary>
        /// Speichern der Userdaten anhand der aktuellen Modeldaten.
        /// </summary>
        /// <param name="query">Die aktuellen Queries die uns zur Verfügung stehen</param>
        /// <param name="userId">die UserId für die die Änderungen vorgenommen werden sollen</param>
        bool Save(IWebQuerySummary query, long userId);
    }
}